package com.ruoyi.gams.mapper;

import com.ruoyi.gams.domain.GamsUserQueueVO;
import com.ruoyi.gams.vo.BussinessCountVO;
import com.ruoyi.gams.vo.BussinessVO;
import com.ruoyi.gams.vo.CountResultVO;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;

import java.util.List;

import com.ruoyi.gams.domain.GamsUserQueue;

/**
 * 排队Mapper接口
 *
 * @author ruoyi
 * @date 2021-09-03
 */
public interface GamsUserQueueMapper
{
    /**
     * 查询排队
     *
     * @param id 排队主键
     * @return 排队
     */
    public GamsUserQueue selectGamsUserQueueById(Integer id);

    /**
     * 查询排队列表
     *
     * @param gamsUserQueue 排队
     * @return 排队集合
     */
    public List<GamsUserQueue> selectGamsUserQueueList(GamsUserQueue gamsUserQueue);
    public List<GamsUserQueue> selectGamsUserQueueListDesc(GamsUserQueue gamsUserQueue);

    /**
     * 新增排队
     *
     * @param gamsUserQueue 排队
     * @return 结果
     */
    public int insertGamsUserQueue(GamsUserQueue gamsUserQueue);

    /**
     * 修改排队
     *
     * @param gamsUserQueue 排队
     * @return 结果
     */
    public int updateGamsUserQueue(GamsUserQueue gamsUserQueue);

    /**
     * 删除排队
     *
     * @param id 排队主键
     * @return 结果
     */
    public int deleteGamsUserQueueById(Integer id);

    /**
     * 批量删除排队
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteGamsUserQueueByIds(Integer[] ids);

    List<GamsUserQueueVO> findByStatusIn(@Param("statusCollection") Collection<Integer> statusCollection);

    GamsUserQueue findFirstByStaffIdAndStatus(@Param("staffId") Integer staffId, @Param("status") Integer status);

    GamsUserQueue findFirstByBussinessIdAndStatus(@Param("bussinessId") Integer bussinessId, @Param("status") Integer status);

    Integer countByCreateTime();

    List<BussinessCountVO> countByBussinessIdAndLast7Days(@Param("id") Integer id);

    List<BussinessVO> findBussinessIdsAndName();

    GamsUserQueue findFirstByBussinessIdOrderByIdDesc(Integer id);

    Integer countByBussinessIdAndStatus(@Param("bussinessId") Integer bussinessId, @Param("status") Integer status);

    List<CountResultVO> countByWindowAndBussiness();

    void expireUserQueue();

    GamsUserQueue findFirstByNumberOrderByIdDesc(@Param("number")String number);

    GamsUserQueue findFirstByWindowIdAndStatusOrderByIdDesc(@Param("windowId")Integer windowId,@Param("status")Integer status);



}
